package hyy_2022;

/**
 * 调整数组顺序使奇数位于偶数前面
 */
public class _0808_Offer21_Exchange {


    /**
     * 1、双指针法
     * 2、初始化: i,j为双指针, 分别指向数组nums的左右两端
     * 3、循环交换: 当i=j时跳出
     *      指针i遇到奇数则执行i=i+1跳过,直到找到偶数
     *      指针j遇到偶数则执行j=j-1跳过,直到找到奇数
     *      交换nums[i]和nums[j]值
     * 4、返回值: 返回已修改的nums数组
     * @param nums
     * @return int[]
     */
    public int[] exchange(int[] nums) {
        int i = 0;
        int j = nums.length - 1;
        while(i < j) {
            while(i < j && (nums[i] & 1) == 1) {
                i++;
            }
            while(i < j && (nums[j] & 1) == 0) {
                j--;
            }
            int tmp = nums[i];
            nums[i] = nums[j];
            nums[j] = tmp;
        }
        return nums;
    }
}
